<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        // 如果你把null或者undefined作为this的绑定对象传入call,apply或者bind
        // 这一些值会在调用时会被忽略 实际应用的是默认绑定规则
        // 什么情况下会传入null呢
        // 最常见的就是使用apply(...)来'展开'一个数组 并当做参数传入一个函数
        // 类似的 bind(..)可以对参数进行柯里化(预先设置一些参数)
        function foo(a,b){
            console.log("a:" + a + ", b:" + b);
        }
        // 把数组"展开"成参数
        foo.apply(null,[2,3]);
        //等价于ES6的解构赋值 使用下面的方法可以避免不必要的this绑定
        foo(...[2,3]); 
        var bar = foo.bind(null,2);//可以提前设置一些参数传入
        bar(3);//后续传入
    </script>
</body>
</html>